package pub.wkq.mq;

import com.rabbitmq.client.AMQP;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

/**
 * 构建简单模式的生产者，目的是发送消息到队列中
 */
public class FooProducer {
    public static void main(String[] args) throws IOException, TimeoutException {
        //1. 创建连接工厂以及相关的参数配置
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("43.136.173.173");
        factory.setPort(5672);
        factory.setVirtualHost("hire");
        factory.setUsername("hire");
        factory.setPassword("hire");
        //2. 通过工厂创建连接
        Connection connection = factory.newConnection();
        //3. 通过连接创建通道
        Channel channel = connection.createChannel();
        //4. 通过通道声明队列(简单模式，不需要交换机)
        /**
         * queue：队列名称
         * durable：是否持久化，true表示持久化，false表示不持久化，重启后队列是否存在
         * exclusive: 是否独占，true：只能有一个消费者监听这个队列，一般设置为 false
         * autoDelete: 是否自动删除，true：消费者断开连接后，队列是否自动删除，一般设置为 false
         * arguments: 额外参数
         */
         channel.queueDeclare("hello",true,false,false,null);
         //5. 向队列发送消息
        /**
         * exchange: 交换机名称，简单模式下使用默认的交换机，名称为空即可
         * routingKey: 路由键，简单模式下使用队列名称
         * props: 额外参数
         * body: 消息内容
         */
        String message = "hello rabbitmq1111";
        channel.basicPublish("","hello",null,message.getBytes());
        //6. 释放资源
        channel.close();
        connection.close();

    }
}
